home *** CD-ROM | disk | FTP | other *** search
- |
- | alloca(nbytes) allocate junk in stack frame
- |
- | void *alloca(size_t size)
- |
-
- .text
- .even
-
- .globl _alloca
- _alloca:
- movel sp@+,a0 | get return addr
- #ifndef __SOZOBON__
- movel sp@+,d0 | get size -- assist in bug fix, add 4 to sp
- #else
- clrl d0 | this size_t thing is getting to be
- movew sp@+,d0 | an annoyance... -- sb
- #endif
-
- addql #1,d0 | ensure address even
- bclr #0,d0 | lop off odd bit
-
- subl d0,sp | increase stack frame size by that much
- movel sp,d0 | set up to return it
-
- #ifndef __SOZOBON__
- lea sp@(-4),sp | new top of stack (real bug fix here)
- #else
- lea sp@(-2),sp | hope this is correct... -- sb
- #endif
-
- jmp a0@ | return by jmping via saved addr
-